import time

import pypandoc


def convert_md_to_pdf(md_content):
    # 转换为 PDF 时，通常不需要 --reference-doc，
    # 样式主要由 LaTeX 模板控制，但保留其他高级功能。
    extra_args = [
        '--standalone',
        '--toc',
        '--toc-depth=3',
        '--number-sections',
        '--filter', 'pandoc-crossref',
        '--metadata-file=metadata.yaml',
        '--pdf-engine=xelatex',
        '-V', 'documentclass=ctexart',
        '-V', 'titlepage',
        '-V', 'toc-own-page',
        '-H', 'section_pagebreak.tex',
        '-V', 'top-level-division=section',
        # '--lua-filter=no_number_lvl1.lua',
    ]

    print("正在开始转换为 PDF...")
    # 更改输出文件名为 .pdf 扩展名
    output_filename  = f"{time.strftime('%Y%m%d-%H%M%S')}.pdf"
    try:
        pypandoc.convert_text(
            md_content,
            # 更改目标输出格式为 'pdf'
            'pdf',
            format='md',
            outputfile=output_filename,
            extra_args=extra_args
        )
        print(f"文件 '{output_filename}' 已成功生成！")
        print("请注意：转换 PDF 需要系统中安装有 LaTeX 发行版 (如 TeX Live 或 MiKTeX)。")
    except Exception as e:
        print(f"转换过程中发生错误: {e}")
        print("常见错误原因：系统未安装 LaTeX 或缺少必要的 Pandoc 依赖。")


if __name__ == '__main__':
    # 假设 'demo.md' 存在
    convert_md_to_pdf(open("demo2.md", encoding='utf-8').read())